import  Vue from 'vue';
import Vuex from 'vuex';
import { list } from '../data.js';

Vue.use(Vuex);
//这个购物车是本地模拟的 不需要异步操作 可以直接省略action

const actions = {};
const mutations = {
    //删除单个商品
    delOneGood(state,value){
        state.list = state.list.filet((item) => item.id !== value);
    },
    //清空购物车
    clearAll(state) {
        state.list = [];
    },
    //删除已选中
    clearSelect(state){
        state.list = state.list.filter((item) => !item.select);
    },
    //改变所有的选中状态
    changeAll(state,value){
        state.list.forEach(item => {
            item.select = value;
        });
    },
};
const state = {
    list,
};
const getters = {
    //你要哪些(复杂)计算的
    //总购买数量 总价 顶部的全选 反选
    //1.list的当前长度
    total(state){
        return state.list.length;
    },
    //2.已选中数量
    selectTotal(state){
        return state.list.reduce((item,prev) => (
            item += prev.select
        ),0)
    },
    //3总价
    totalPrice(state){
        return state.list
        .filter((item) => item.select)
        .reduce((item,prev) => (item += prev.buy_num * prev.price),0)
    },
    //总购买数量
    totalNum(state){
        return state.list
        .filter((item) => item.select)
        .reduce((item,prev) => (item += prev.buy_num),0)
    }
};

export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters,
});